package chaoyue.study.extend;

/**
 * 使用instanceof关键字可以在运行时动态判断类型
 * 即可以在判断静态类型的基础上额外判断动态绑定的类型
 */
public class ExtendInstanceof {
    public static void main(String[] args) {
        Base b1 = new Base();
        Base b2 = new Child();

        Child c = new Child();

        System.out.println(b1 instanceof Base); // ture 静态类型匹配
        System.out.println(b1 instanceof Child); // false 父类不能强转成子类
        System.out.println("-----------------");
        System.out.println(b2 instanceof Base); // ture 静态类型匹配
        System.out.println(b2 instanceof Child);// ture 因为父类引用实际上是指向子类 所以可以强转
        System.out.println("-----------------");
        System.out.println(c instanceof Base); // ture 子类可以转成父类（向上转型）
        System.out.println(c instanceof Child); // true 静态类型
    }

    private static class Base {
    }

    private static class Child extends Base {

    }
}
